home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / gamespy_detect.nasl < prev    next >
Text File  |  2005-01-14  |  2KB  |  102 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6. # Details:  http://www.pivx.com/kristovich/poc/bf1942dos.c
  7. #        http://www.pivx.com/kristovich/adv/mk001/
  8. #
  9. #
  10.  
  11. if(description)
  12. {
  13.  script_id(11211);
  14.  script_bugtraq_id(6636);
  15.  script_version ("$Revision: 1.5 $");
  16.  
  17.  name["english"] = "GameSpy detection";
  18.  
  19.  script_name(english:name["english"]);
  20.  
  21.     desc["english"] = "
  22. The remote host is running a GameSpy server.
  23.  
  24. This service is used to host a gaming server.
  25.  
  26. It turns out that since these server use UDP as their transport layer, an 
  27. attacker may misuse them so that they flood a third party host, as they send 
  28. multiple UDP packets in reply to one request, by sending a spoofed
  29. UDP packet with the IP address of their target as the source field.
  30.  
  31.  
  32. An attacker may use this service and network connection as a mean to flood a 
  33. third party host.
  34.  
  35.  
  36. Solution : Filter incoming traffic to this port, or disable this service
  37. Risk factor : Medium
  38. See also: http://www.pivx.com/kristovich/adv/mk001/";
  39.  
  40.  
  41.  script_description(english:desc["english"]);
  42.  
  43.  
  44.  summary["english"] = "Checks for the presence of a GameSpy server";
  45.  
  46.  script_summary(english:summary["english"]);
  47.  
  48.  script_category(ACT_GATHER_INFO);
  49.  
  50.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison",
  51.                  francais:"Ce script est Copyright (C) 2003 Renaud Deraison");
  52.  
  53.  family["english"] = "Useless services";
  54.  family["francais"] = "Services inutiles";
  55.  script_family(english:family["english"], francais:family["francais"]);
  56.  exit(0);
  57. }
  58.  
  59. # There's <official port> to bind a gamespy server to, and
  60. # scanning all the UDP ports would take too much time. We try
  61. # a list of common ports instead.
  62.  
  63. port[0] = 7777;
  64. port[1] = 8888;
  65. port[2] = 12203;
  66. port[3] = 12204;
  67. port[4] = 14567;
  68. port[5] = 14570;
  69. port[6] = 22000;
  70. port[7] = 23000;
  71. port[8] = 27015;
  72. port[9] = 27016;
  73. port[10] = 27960;
  74. port[11] = 27961;
  75. port[12] = 28001;
  76. port[13] = 28002;
  77. port[14] = 28016;
  78. port[15] = 28020;
  79. port[16] = 28040;
  80. port[17] = 28672;
  81.  
  82. port[18] = 0;
  83.  
  84. for(i=0;port[i];i=i+1)
  85. {
  86. soc = open_sock_udp(port[i]);
  87. if ( ! soc ) exit(0);
  88. send(socket:soc, data:string("\\players\\rules\\status\\packets\\"));
  89. r = recv(socket:soc, length:4096, timeout:2);
  90. if(strlen(r) > 0)
  91.  {
  92.  if(("disconnect" >< r) ||
  93.     (strlen(r) == 4 && ord(r[0]) == 0x00 && ord(r[1]) == 0x40))
  94.         {
  95.     set_kb_item(name:"Services/udp/gamespy", value:port);
  96.     security_note(port[i]);
  97.     exit(0);
  98.     }
  99.  }
  100.  close(soc);
  101. }
  102.